package LeetCode.leetcode977;

/**
 * 给你一个按 非递减顺序 排序的整数数组 nums，返回 每个数字的平方 组成的新数组，要求也按 非递减顺序 排序。
 */
public class Main {
    /**
     *
     * @param nums
     * @return
     */
    public int[] sortedSquares(int[] nums) {
        int[] result = new int[nums.length];
        int k = nums.length - 1;
        int i = 0;
        int j = nums.length - 1;

        while (i < j) {
            if (nums[i] * nums[i] > nums[j] * nums[j]) {
                result[k--] = nums[i] * nums[i];
                i++;
            } else {
                result[k--] = nums[j] * nums[j];
                j--;
            }
        }
        //剩下最后一个数字,d单独赋值
        result[k] = nums[i] * nums[i];
        return result;
    }
    public int[] sortedSquares2(int[] nums) {
        int l = 0;
        int r = nums.length-1;
        int[] tmp = new int[nums.length];
        int t = tmp.length-1;

        while (l <= r){
            if (nums[l]*nums[l] < nums[r]*nums[r]){
                tmp[t--] = nums[r]*nums[r];
                r--;
            }else {
                tmp[t--] = nums[l]*nums[l];
                l++;
            }
        }
        return tmp;
    }

}
